package org.inspiration.dudu.web.service.content;

import org.inspiration.dudu.content.model.dto.ArticleDTO;
import org.inspiration.dudu.content.model.vo.ArticleSimpleVO;
import org.inspiration.dudu.content.model.vo.ArticleVO;

import java.util.List;

/**
 * 文章外观服务接口，提供与文章相关的操作。
 */
public interface ArticleFacadeService {
    /**
     * 上传文章
     * 
     * @param articleDTO 文章数据传输对象
     * @return 上传结果的字符串表示
     */
    String uploadArticle(ArticleDTO articleDTO);

    /**
     * 根据文章ID查找文章
     * 
     * @param id 文章ID
     * @return 文章视图对象
     */
    ArticleVO getArticleById(String id);

    /**
     * 获取最近的文章列表
     * 
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 最近文章的简要视图对象列表
     */
    List<ArticleSimpleVO> getPublishedArticlesOrderByDESC(Integer pageNum, Integer pageSize);

    List<ArticleSimpleVO> getPublishedArticlesByUserIdOrderByDESC(Long userId, Integer pageNum, Integer pageSize);

    List<ArticleSimpleVO> getDraftArticlesByUserIdOrderByDESC(Long userId, Integer pageNum, Integer pageSize);

    void updateArticle(ArticleDTO articleDTO, String id);

    void updateArticleStatus(String id, String status);

    List<ArticleSimpleVO> getArticlesByUserIdAndKeyWordOrderByDESC(Long userId, String keyWord, Integer pageNum, Integer pageSize);

    List<ArticleSimpleVO> getPublishedArticlesByKeyWordOrderByDESC(String keyWord, Integer pageNum, Integer pageSize);
}
